package java_learn.java_jinjie.ThreadAndException;

import java.util.List;

/**
 * 多个异常使用捕获又该如何处理呢？
 * 1. 多个异常分别处理。
 * 2. 多个异常一次捕获，多次处理。
 * 3. 多个异常一次捕获一次处理。
 *
 * @Author: 李浩然
 * @Date: 2020/12/7 2:05 下午
 */
public class DemoMultiException {
    public static void main(String[] args) {
        /*        *//**
         * 1. 多个异常分别处理。
         *//*
        try{
            int[] arr={1,2,3};
        System.out.println(arr[3]); //ArrayIndexOutOfBoundsException
        }catch (ArrayIndexOutOfBoundsException e){
            e.printStackTrace();
        }

        try{
            List<Integer>list= List.of(1,2,3);
            System.out.println(list.get(3));
        }catch (IndexOutOfBoundsException e){
            e.printStackTrace();
        }
        System.out.println("后续代码");*/
        /*        *//**
         * 2. 多个异常一次捕获，多次处理。
         *//*
        try{
            int[] arr={1,2,3};
            System.out.println(arr[3]); //ArrayIndexOutOfBoundsException
            List<Integer>list= List.of(1,2,3);
            System.out.println(list.get(3));
        }catch (ArrayIndexOutOfBoundsException e){
            e.printStackTrace();
        }catch (IndexOutOfBoundsException e){
            e.printStackTrace();
        }
        //一个Try多个catch，catch里面定义的异常变量，如果有子父类关系，那么子类一场必须要写在上面，否则报错
        System.out.println("后续代码");*/
        /**
         * 3. 多个异常一次捕获，一次处理。
         */
        try {
            int[] arr = {1, 2, 3};
            System.out.println(arr[3]); //ArrayIndexOutOfBoundsException
            List<Integer> list = List.of(1, 2, 3);
            System.out.println(list.get(3));
        } catch (Exception e) {
            e.printStackTrace();
        }
        //一个Try多个catch，catch里面定义的异常变量，如果有子父类关系，那么子类一场必须要写在上面，否则报错
        System.out.println("后续代码");
    }
}
